﻿#pragma once

#include "core/Macro.h"
#include "function/RenderSystem/Texture.h"

namespace Engine
{
	class ENGINE_API OpenGLTexture2D : public Texture2D
	{
	public:
		OpenGLTexture2D(const std::string& path);
		OpenGLTexture2D(int width, int height, const void* data);
		~OpenGLTexture2D() override;

		[[nodiscard]] uint32_t GetWidth() const override { return width; }
		[[nodiscard]] uint32_t GetHeight() const override { return height; }

		void Bind(uint32_t slot = 0) const override;

	private:
		std::string path;
		uint32_t width;
		uint32_t height;
		uint32_t rendererID;
	};
}
